Fix direct_remap_area_pages() to handle pagetables
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 18 Aug 2005 17:46:26 +0000 (17:46 +0000)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 18 Aug 2005 17:46:26 +0000 (17:46 +0000)
above 4GB.

Signed-off-by: Keir Fraser <keir@xensource.com>
linux-2.6-xen-sparse/arch/xen/i386/mm/ioremap.c

index b39f110274e2594a57e4647ba1f413f0d7611593..1af61e6ed13b4aaee19972d4daae59e38a1e5335 100644 (file)
@@ -300,17 +300,17 @@ void __init bt_iounmap(void *addr, unsigned long size)
 
 
 static int direct_remap_area_pte_fn(pte_t *pte, 
-                                    struct page *pte_page,
-                                    unsigned long address, 
-                                    void *data)
+                                   struct page *pte_page,
+                                   unsigned long address, 
+                                   void *data)
 {
-        mmu_update_t **v = (mmu_update_t **)data;
+       mmu_update_t **v = (mmu_update_t **)data;
 
-        (*v)->ptr = (pfn_to_mfn(page_to_pfn(pte_page)) << PAGE_SHIFT)
-                    | ((unsigned long)pte & ~PAGE_MASK);
-        (*v)++;
+       (*v)->ptr = ((physaddr_t)pfn_to_mfn(page_to_pfn(pte_page)) <<
+                    PAGE_SHIFT) | ((unsigned long)pte & ~PAGE_MASK);
+       (*v)++;
 
-        return 0;
+       return 0;
 }
 
 int direct_remap_area_pages(struct mm_struct *mm,
@@ -397,6 +397,16 @@ int touch_pte_range(struct mm_struct *mm,
        }
 
        return generic_page_range(mm, address, size, f, NULL);
-}                 
+} 
 
 EXPORT_SYMBOL(touch_pte_range);
+
+/*
+ * Local variables:
+ *  c-file-style: "linux"
+ *  indent-tabs-mode: t
+ *  c-indent-level: 8
+ *  c-basic-offset: 8
+ *  tab-width: 8
+ * End:
+ */